<?php //移动支付
namespace Home\Controller;
use Think\Controller;
class MobilePayController extends Controller {
    //TP构造函数
    /*public function _initialize(){
        //自动加载的类
        new \Org\Autoload();
        if(session('member_id')==''){
            echo "<script>alert('您没有登录，请您登录后再访问此页面');window.location.href='/user/login';</script>";exit;
        }
        $this->member_id=$this->member_info['member_id'];
        //echo $member_id;exit;
    }*/
    //移动支付
    public function mobile_pay(){
        //合作身份者id，以2088开头的16位纯数字
        $alipay_config['partner']='2088121750845274';
        //商户的私钥（后缀是.pen）文件相对路径
        //$alipay_config['private_key_path']=ROOT_PATH .'Data/key/rsa_private_key.pem';
        $alipay_config['private_key_path']='data/key/rsa_private_key.pem';
        //支付宝公钥（后缀是.pen）文件相对路径
        //$alipay_config['ali_public_key_path']=ROOT_PATH .'Data/key/alipay_public_key.pem';
        $alipay_config['ali_public_key_path']='data/key/alipay_public_key.pem';
        //签名方式 不需修改
        $alipay_config['sign_type']=strtoupper('RSA');
        //字符编码格式 目前支持 gbk 或 utf-8
        $alipay_config['input_charset']=strtolower('utf-8');
        //ca证书路径地址，用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['cacert']=getcwd().'\\cacert.pem';
        //$alipay_config['cacert']=ROOT_PATH .'www/cacert.pem';
        //访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
        $alipay_config['transport']='http';
        //包含类
        vendor('Mobilepay.Corefunction');
        vendor('Mobilepay.Rsafunction');
        vendor('Mobilepay.Notify');
        //vendor('Mobile.Submit');
        //计算得出通知验证结果
        $alipayNotify=new \AlipayNotify($alipay_config);
        $verify_result=$alipayNotify->verifyNotify();
        if($verify_result){//验证成功
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //请在这里加上商户的业务逻辑程序代
            //——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
            //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
            //商户订单号
            $out_trade_no=$_POST['out_trade_no'];
            //支付宝交易号
            $trade_no=$_POST['trade_no'];
            //交易状态
            $trade_status=$_POST['trade_status'];
            if($_POST['trade_status']=='TRADE_FINISHED') {
                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
                //如果有做过处理，不执行商户的业务程序
                //注意：
                //退款日期超过可退款期限后（如三个月可退款），支付宝系统发送该交易状态通知
                //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的

                //调试用，写文本函数记录程序运行情况是否正常
                //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
            }
            else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
                //如果有做过处理，不执行商户的业务程序

                //注意：
                //付款完成后，支付宝系统发送该交易状态通知
                //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的

                //调试用，写文本函数记录程序运行情况是否正常
                //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
            }
            //——请根据您的业务逻辑来编写程序（以上代码仅作参考）——
            echo "success";		//请不要修改或删除
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
        else {
            //验证失败
            echo "fail";
            //调试用，写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
        }

    }


}